package fr.generali.accueilclient.gwt.client.ui.components.menu.tab;

import com.google.gwt.user.client.ui.SimplePanel;

import fr.generali.accueilclient.gwt.client.ui.components.menu.Resources;


public class TabMenuItemTypeSelector {

    /**
     * Les différents types de {@link TabMenuItem}
     */
    public static enum HeaderTabMenuItemType {
        INTERNAL("I"), EXTERNAL("E"), EXTERNAL_TITLE("ET");
        
        private String key;

        private HeaderTabMenuItemType(String key) {
            this.key = key;
        }
        
        public static HeaderTabMenuItemType valueFromKey(String key){
            if(key !=null && key.equals(EXTERNAL.getKey())){
                return EXTERNAL;
            }
            return INTERNAL;
        }
        
        public String getKey() {
            return key;
        }
    }

    
    /**
     * Un item de menu, peut être de différents types, déterminés par {@link HeaderTabMenuItemType}.<br>
     * Cette méthode permet en fonction du type, d'affecter le style adequat.<br>
     * @param itemType
     */
    public static void applyType(SimplePanel container, HeaderTabMenuItemType itemType,  Resources res) {
        switch (itemType) {
            case INTERNAL:
                container.removeStyleName(res.layout().externalLink());
                container.removeStyleName(res.style().title());
                container.addStyleName(res.style().localLink());
                break;

            case EXTERNAL:
                container.removeStyleName(res.style().localLink());
                container.removeStyleName(res.style().title());
                container.addStyleName(res.layout().externalLink());
                break;
            case EXTERNAL_TITLE:
                container.removeStyleName(res.style().localLink());
                container.addStyleName(res.layout().externalLink());
                container.addStyleName(res.style().title());
                break;
            default:
                break;
        }
    }
}
